package com.blood.modules.system.service;

import com.blood.core.config.mybatisplus.ICommonService;
import com.blood.core.resp.PageResult;
import com.blood.core.resp.ResponseResult;
import com.blood.core.resp.TokenResp;
import com.blood.modules.system.dto.req.SysUpdatePasswordReq;
import com.blood.modules.system.dto.req.SysUserLoginReq;
import com.blood.modules.system.dto.req.SysUserPageReq;
import com.blood.modules.system.dto.req.SysUserReq;
import com.blood.modules.system.dto.req.SysUserSaveReq;
import com.blood.modules.system.dto.resp.ResetPasswordResp;
import com.blood.modules.system.dto.resp.SysUserInfoResp;
import com.blood.modules.system.dto.resp.SysUserPageResp;
import com.blood.modules.system.model.SysUser;

import java.util.List;


/**
 * 系统用户Service接口
 *
 * @author daoren
 * @date 2022-05-12 09:14:48
 */
public interface ISysUserService extends ICommonService<SysUser> {
    /**
     * 通过登录账号获取用户信息
     *
     * @param loginName
     * @return
     */
    SysUser findByLoginName(String loginName);

    /**
     * 账户登录
     *
     * @param req
     * @return
     */
    ResponseResult<TokenResp> accountLogin(SysUserLoginReq req);

    /**
     * 分页查询
     *
     * @param req 查询参数
     * @return 分页列表信息
     */
    ResponseResult<PageResult<SysUserPageResp>> pageList(SysUserPageReq req);

    /**
     * 获取列表
     *
     * @param req 查询参数
     * @return 列表信息
     */
    List<SysUser> queryList(SysUserReq req);

    /**
     * 添加
     *
     * @param req
     * @return 结果
     */
    ResponseResult<Void> saveInfo(SysUserSaveReq req);

    /**
     * 更新信息
     *
     * @param req
     * @return 结果
     */
    ResponseResult<Void> updateInfo(SysUserSaveReq req);

    /**
     * 修改账号状态
     *
     * @param id 用户id
     * @param status 用户状态
     * @return 修改结果
     */
    ResponseResult<Void> updateStatus(String id,Integer status);


    /**
     * 根据id获取详情
     *
     * @param id
     * @return 详情
     */
    ResponseResult<SysUserInfoResp> findDetailById(String id);

    /**
     * 重置密码.
     *
     * @param userId 用户id
     */
    ResponseResult<ResetPasswordResp> resetPassword(String userId);

    /**
     * 修改密码
     *
     * @param req 密码信息
     * @return 结果
     */
    ResponseResult<Void> updatePassword(SysUpdatePasswordReq req);

    /**
     * 根据id删除数据
     *
     * @param id 组织id
     * @return 删除结果
     */
    ResponseResult<Void> deleted(String id);
}
